gaincome

Author

Julian Gorman

Published

April 10, 2023

# uncomment to run, then recomment it out so you don't run it every time

# census_api_key("APIKEYCODE", install=TRUE)
# Here we chose variables we want
myvars <- c(totalpop = "B01003_001",
            medincome = "B19013_001",
            medage = "B01002_001"
)
#Here I pulled a list of counties in GA
ga_counties_withgeo <- get_acs(geography = "county",
                       variables = c(myvars),
                       state = "GA",
                       output = "wide",
                       geometry = TRUE)
Getting data from the 2017-2021 5-year ACS
Warning: • You have not set a Census API key. Users without a key are limited to 500
queries per day and may experience performance limitations.
ℹ For best results, get a Census API key at
http://api.census.gov/data/key_signup.html and then supply the key to the
`census_api_key()` function to use it throughout your tidycensus session.
This warning is displayed once per session.
Downloading feature geometry from the Census website.  To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.

  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |                                                                      |   1%
  |                                                                            
  |=                                                                     |   1%
  |                                                                            
  |=                                                                     |   2%
  |                                                                            
  |==                                                                    |   2%
  |                                                                            
  |==                                                                    |   3%
  |                                                                            
  |===                                                                   |   4%
  |                                                                            
  |===                                                                   |   5%
  |                                                                            
  |====                                                                  |   5%
  |                                                                            
  |====                                                                  |   6%
  |                                                                            
  |=====                                                                 |   7%
  |                                                                            
  |=====                                                                 |   8%
  |                                                                            
  |======                                                                |   8%
  |                                                                            
  |======                                                                |   9%
  |                                                                            
  |=======                                                               |   9%
  |                                                                            
  |=======                                                               |  10%
  |                                                                            
  |=======                                                               |  11%
  |                                                                            
  |========                                                              |  11%
  |                                                                            
  |========                                                              |  12%
  |                                                                            
  |===========                                                           |  15%
  |                                                                            
  |=============                                                         |  19%
  |                                                                            
  |===============                                                       |  21%
  |                                                                            
  |=================                                                     |  24%
  |                                                                            
  |====================                                                  |  28%
  |                                                                            
  |======================                                                |  31%
  |                                                                            
  |========================                                              |  35%
  |                                                                            
  |===========================                                           |  38%
  |                                                                            
  |=============================                                         |  42%
  |                                                                            
  |================================                                      |  45%
  |                                                                            
  |==================================                                    |  49%
  |                                                                            
  |=====================================                                 |  52%
  |                                                                            
  |=======================================                               |  56%
  |                                                                            
  |==========================================                            |  59%
  |                                                                            
  |============================================                          |  63%
  |                                                                            
  |==============================================                        |  66%
  |                                                                            
  |=================================================                     |  70%
  |                                                                            
  |===================================================                   |  73%
  |                                                                            
  |======================================================                |  77%
  |                                                                            
  |========================================================              |  80%
  |                                                                            
  |===========================================================           |  84%
  |                                                                            
  |=============================================================         |  87%
  |                                                                            
  |===============================================================       |  91%
  |                                                                            
  |==================================================================    |  94%
  |                                                                            
  |====================================================================  |  98%
  |                                                                            
  |======================================================================| 100%
ga_counties_withgeo
Simple feature collection with 159 features and 8 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -85.60516 ymin: 30.35785 xmax: -80.84038 ymax: 35.00124
Geodetic CRS:  NAD83
First 10 features:
   GEOID                      NAME totalpopE totalpopM medincomeE medincomeM
1  13021      Bibb County, Georgia    156711        NA      43862       1778
2  13049  Charlton County, Georgia     12416        NA      45494       5791
3  13283  Treutlen County, Georgia      6410        NA      35441       9710
4  13309   Wheeler County, Georgia      7568        NA      26776       3605
5  13279    Toombs County, Georgia     26956        NA      42975       3095
6  13077    Coweta County, Georgia    144928        NA      83486       2974
7  13153   Houston County, Georgia    161177        NA      70313       3057
8  13183      Long County, Georgia     16398        NA      52742       8858
9  13163 Jefferson County, Georgia     15708        NA      42238       4150
10 13261    Sumter County, Georgia     29690        NA      36687       2163
   medageE medageM                       geometry
1     36.2     0.3 MULTIPOLYGON (((-83.89192 3...
2     40.6     1.5 MULTIPOLYGON (((-82.4156 31...
3     39.9     5.3 MULTIPOLYGON (((-82.74762 3...
4     33.6    10.0 MULTIPOLYGON (((-82.93976 3...
5     37.8     0.9 MULTIPOLYGON (((-82.48038 3...
6     38.9     0.3 MULTIPOLYGON (((-85.0132 33...
7     35.9     0.3 MULTIPOLYGON (((-83.85685 3...
8     33.7     0.8 MULTIPOLYGON (((-81.98162 3...
9     40.5     0.8 MULTIPOLYGON (((-82.66192 3...
10    37.0     1.1 MULTIPOLYGON (((-84.44381 3...
#Then, I pulled a list of all of the counties in the US
all_counties_withgeo <- get_acs(geography = "county",
                       variables = c(myvars),
                       output = "wide",
                       geometry = TRUE)
Getting data from the 2017-2021 5-year ACS
Downloading feature geometry from the Census website.  To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
all_counties_withgeo
Simple feature collection with 3221 features and 8 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -179.1489 ymin: 17.88328 xmax: 179.7785 ymax: 71.36516
Geodetic CRS:  NAD83
First 10 features:
   GEOID                              NAME totalpopE totalpopM medincomeE
1  20161              Riley County, Kansas     72602        NA      53296
2  19159             Ringgold County, Iowa      4739        NA      57700
3  30009            Carbon County, Montana     10488        NA      63178
4  16007           Bear Lake County, Idaho      6327        NA      60337
5  55011         Buffalo County, Wisconsin     13314        NA      61167
6  31185             York County, Nebraska     14164        NA      66337
7  08037            Eagle County, Colorado     55693        NA      91338
8  42129 Westmoreland County, Pennsylvania    355107        NA      64708
9  40079         Le Flore County, Oklahoma     48436        NA      43049
10 48053              Burnet County, Texas     48424        NA      65363
   medincomeM medageE medageM                       geometry
1        2489    25.5     0.1 MULTIPOLYGON (((-96.96095 3...
2        5058    44.3     1.0 MULTIPOLYGON (((-94.47167 4...
3        4261    50.7     0.9 MULTIPOLYGON (((-109.7987 4...
4        7039    38.9     1.1 MULTIPOLYGON (((-111.6345 4...
5        2352    46.5     0.5 MULTIPOLYGON (((-92.08384 4...
6        4128    39.5     1.2 MULTIPOLYGON (((-97.82629 4...
7        4058    37.8     0.8 MULTIPOLYGON (((-107.1137 3...
8        1350    47.1     0.2 MULTIPOLYGON (((-79.90487 4...
9        1869    38.8     0.3 MULTIPOLYGON (((-95.05996 3...
10       4694    44.7     0.3 MULTIPOLYGON (((-98.45924 3...
#remove MOE columns - they all end with "M"
ga_counties_withgeo <- ga_counties_withgeo %>%
  select(-ends_with("M"))

ga_counties_withgeo
Simple feature collection with 159 features and 5 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -85.60516 ymin: 30.35785 xmax: -80.84038 ymax: 35.00124
Geodetic CRS:  NAD83
First 10 features:
   GEOID                      NAME totalpopE medincomeE medageE
1  13021      Bibb County, Georgia    156711      43862    36.2
2  13049  Charlton County, Georgia     12416      45494    40.6
3  13283  Treutlen County, Georgia      6410      35441    39.9
4  13309   Wheeler County, Georgia      7568      26776    33.6
5  13279    Toombs County, Georgia     26956      42975    37.8
6  13077    Coweta County, Georgia    144928      83486    38.9
7  13153   Houston County, Georgia    161177      70313    35.9
8  13183      Long County, Georgia     16398      52742    33.7
9  13163 Jefferson County, Georgia     15708      42238    40.5
10 13261    Sumter County, Georgia     29690      36687    37.0
                         geometry
1  MULTIPOLYGON (((-83.89192 3...
2  MULTIPOLYGON (((-82.4156 31...
3  MULTIPOLYGON (((-82.74762 3...
4  MULTIPOLYGON (((-82.93976 3...
5  MULTIPOLYGON (((-82.48038 3...
6  MULTIPOLYGON (((-85.0132 33...
7  MULTIPOLYGON (((-83.85685 3...
8  MULTIPOLYGON (((-81.98162 3...
9  MULTIPOLYGON (((-82.66192 3...
10 MULTIPOLYGON (((-84.44381 3...
#remove that trailing "E"
colnames(ga_counties_withgeo) <- sub("E$", "", colnames(ga_counties_withgeo)) # $ means end of string only

ga_counties_withgeo
Simple feature collection with 159 features and 5 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -85.60516 ymin: 30.35785 xmax: -80.84038 ymax: 35.00124
Geodetic CRS:  NAD83
First 10 features:
   GEOID                       NAM totalpop medincome medage
1  13021      Bibb County, Georgia   156711     43862   36.2
2  13049  Charlton County, Georgia    12416     45494   40.6
3  13283  Treutlen County, Georgia     6410     35441   39.9
4  13309   Wheeler County, Georgia     7568     26776   33.6
5  13279    Toombs County, Georgia    26956     42975   37.8
6  13077    Coweta County, Georgia   144928     83486   38.9
7  13153   Houston County, Georgia   161177     70313   35.9
8  13183      Long County, Georgia    16398     52742   33.7
9  13163 Jefferson County, Georgia    15708     42238   40.5
10 13261    Sumter County, Georgia    29690     36687   37.0
                         geometry
1  MULTIPOLYGON (((-83.89192 3...
2  MULTIPOLYGON (((-82.4156 31...
3  MULTIPOLYGON (((-82.74762 3...
4  MULTIPOLYGON (((-82.93976 3...
5  MULTIPOLYGON (((-82.48038 3...
6  MULTIPOLYGON (((-85.0132 33...
7  MULTIPOLYGON (((-83.85685 3...
8  MULTIPOLYGON (((-81.98162 3...
9  MULTIPOLYGON (((-82.66192 3...
10 MULTIPOLYGON (((-84.44381 3...

Here I mapped Georgia counties by income, using mapview

mapview(ga_counties_withgeo, zcol = "medincome")

This changed the colors of the map

mapview(ga_counties_withgeo, zcol = "medincome", 
         col.regions = RColorBrewer::brewer.pal(9, "Greens"), 
         alpha.regions = 1)
Warning: Found less unique colors (9) than unique zcol values (159)! 
Interpolating color vector to match number of zcol values.

In this step, I changed the darkness of the background.

mapviewOptions("basemaps.color.shuffle" = FALSE)
# this changed the maps background from black to white
mapview(ga_counties_withgeo, zcol = "medincome", 
         col.regions = RColorBrewer::brewer.pal(9, "Greens"), 
         alpha.regions = 1)
Warning: Found less unique colors (9) than unique zcol values (159)! 
Interpolating color vector to match number of zcol values.

Here, I mapped Georgia counties by both income and age.

map_income <- mapview(ga_counties_withgeo, zcol = "medincome", 
         col.regions = RColorBrewer::brewer.pal(9, "Greens"), 
         alpha.regions = 1)
Warning: Found less unique colors (9) than unique zcol values (159)! 
Interpolating color vector to match number of zcol values.
map_age <- mapview(ga_counties_withgeo, zcol = "medage", 
         col.regions = RColorBrewer::brewer.pal(9, "Greens"), 
         alpha.regions = 1)
Warning: Found less unique colors (9) than unique zcol values (97)! 
Interpolating color vector to match number of zcol values.
sync(map_income, map_age)
# here, i added a slider feature to the two maps.
map_income | map_age

To turn off legends, hover text, popups

mapview(ga_counties_withgeo, zcol = "medincome", 
         col.regions = RColorBrewer::brewer.pal(9, "Greens"), 
         alpha.regions = 1,
         legend = FALSE, 
         label = FALSE, 
         popup = FALSE)
Warning: Found less unique colors (9) than unique zcol values (159)! 
Interpolating color vector to match number of zcol values.

This customized labels

mylabel <- glue::glue("{ga_counties_withgeo$NAM} {ga_counties_withgeo$medincome}")


mapview(ga_counties_withgeo, zcol = "medincome", 
         col.regions = RColorBrewer::brewer.pal(9, "Greens"), 
         alpha.regions = 1,
         label = mylabel)
Warning: Found less unique colors (9) than unique zcol values (159)! 
Interpolating color vector to match number of zcol values.

Here, I customized the interactive popups

mypopup <- glue::glue("<strong>{ga_counties_withgeo$NAM}</strong><br />
                      Total Population: {ga_counties_withgeo$totalpop}<br />
                      Median Income: {ga_counties_withgeo$medincome}") %>% 
  lapply(htmltools::HTML)

# mylabel <- glue::glue("{all_data$State} {all_data$PctChange10_20}%") %>%
#   lapply(htmltools::HTML)
head(mypopup)
[[1]]
<strong>Bibb County, Georgia</strong><br />
Total Population: 156711<br />
Median Income: 43862

[[2]]
<strong>Charlton County, Georgia</strong><br />
Total Population: 12416<br />
Median Income: 45494

[[3]]
<strong>Treutlen County, Georgia</strong><br />
Total Population: 6410<br />
Median Income: 35441

[[4]]
<strong>Wheeler County, Georgia</strong><br />
Total Population: 7568<br />
Median Income: 26776

[[5]]
<strong>Toombs County, Georgia</strong><br />
Total Population: 26956<br />
Median Income: 42975

[[6]]
<strong>Coweta County, Georgia</strong><br />
Total Population: 144928<br />
Median Income: 83486
mapview(ga_counties_withgeo, zcol = "medincome", 
         col.regions = RColorBrewer::brewer.pal(9, "Greens"), 
         alpha.regions = 1,
         popup = mypopup)
Warning: Found less unique colors (9) than unique zcol values (159)! 
Interpolating color vector to match number of zcol values.